data : un mod de reprezentare a informaţiei.

Orice dată , poate fi caracterizată prin:
  • Identificator (nume)
  • Tip de date ( intreg, real, caracter…); în funcţie de tipul datei declarat se alocă spaţiu de memorie: 2,4,6 octeţi ; Domeniul de valori[limita_iniţială, limita_finală] depinde de tipul datei declarat;
  • durata de viaţă / domeniul de vizibilitate: valoarea recunoscută într-un anumit punct al programului/subprogramului;
  • modul de acces la conţinutul locaţiei de memorie : direct prin intermediul identificatorului, indirect prin intermediul pointerilor (în funcţie de modul de alocare a memoriei );

Zone/segmente de memorie
  1. segmentul de date - variabile globale, recunoscute în orice punct al programului ( alocare statică);
  2. segmentul de stivă – varabile locale/ subprograme
  3. segmentul HEAP –gestionat prin alocare dinamică – în timpul execuţiei programului/subprogramului

#include<……….>
declarări date/variabile globale – segmentul de date

subprogram : tip_date(void) nume_subprogram (parametrii formali..)

int main()
{ declarări variabile locale – segment de memorie stivă
Toate variabilele declarate sunt recunoscute numai în interiorul blocului
( {delimitarea conţinutului unui bloc } )
………………………………………….. cod program/subprogram/bloc
} // la ieşirea din subprogram/bloc spaţiul de memorie alocat în segmentul de memorie stivă utilizat este dezafectat ( se goleşte stiva)


Alocare statică= se alocă spaţiu de memorie în timpul compilării programului;

Alocare dinamică= se alocă spaţiu de memorie în timpul execuţiei programului; spaţiul alocat poate fi dezafectat în momentul în care nu mai este nevoie de conţinuturile variabilelor respective;

HEAP. Operatori şi constante predefinite în limbajul C++

NULL- constanta predefinită prin care se indică o adresă inexistentă/nealocată( compatibilă cu orice tip de date pointer);
new tip_date - se rezerva spatiu de memorie în zona HEAP pentru tipul de date specificat
delete (adresa_HEAP) - dezafectare spatiu de memorie alocat în zona HEAP de la adresa specificata

Exemplu didactic:
int *a,*b,*c;
a=new int; b=new int; c=new int;
*a=3; *b=4; *c=*a+*b;
cout<<*c; se va afisa 7
cout << endl;
cout<<c; atentie! se va afisa adresa unei variabile de memorie in format hexa... de genul 0x83107...
delete(c);
cout<<*c; atentie! rezultatul afisat nu are nicio legatura cu valoarea calculata anterior, spatiul de memorie a fost dezafectat

ListeAlocateDinamic